diff --git a/system/helpers/typography_helper.php b/system/helpers/typography_helper.php
index 11acea1..5c5fffa 100644
--- a/system/helpers/typography_helper.php
+++ b/system/helpers/typography_helper.php
@@ -60,16 +60,11 @@
  */
 if ( ! function_exists('auto_typography'))
 {
-	function auto_typography($str, $allow_event_handlers = FALSE, $reduce_empty_lines = FALSE)
+	function auto_typography($str, $strip_js_event_handlers = TRUE, $reduce_linebreaks = FALSE)
 	{
-		$CI =& get_instance();
-	
+		$CI =& get_instance();	
 		$CI->load->library('typography');
-		
-		$CI->typography->allow_js_event_handlers($allow_event_handlers);
-		$CI->typography->reduce_empty_lines($reduce_empty_lines);
-		
-		return $CI->typography->auto_typography($str);
+		return $CI->typography->auto_typography($str, $strip_js_event_handlers, $reduce_linebreaks);
 	}
 }
 
diff --git a/system/libraries/Typography.php b/system/libraries/Typography.php
index dd5f928..2760442 100644
--- a/system/libraries/Typography.php
+++ b/system/libraries/Typography.php
@@ -35,12 +35,6 @@
 	// Tags we want the parser to completely ignore when splitting the string.
 	var $ignore_elements = 'a|b|i|em|strong|span|img|li';	
 
-	// Whether to allow Javascript event handlers to be sumitted inside tags
-	var $allow_js_event_handlers = FALSE;
-
-	// Whether to reduce more than two consecutive empty lines to a maximum of two
-	var $reduce_empty_lines	= FALSE;
-
 	/**
 	 * Nothing to do here...
 	 *
@@ -59,14 +53,20 @@
 	 * 	- Converts three dots into ellipsis.
 	 * 	- Converts double dashes into em-dashes.
 	 *  - Converts two spaces into entities
+	 *
+	 * @access	public
+	 * @param	string
+	 * @param	bool	whether to strip javascript event handlers for security
+	 * @param	bool	whether to reduce more then two consecutive newlines to two
+	 * @return	string
 	 */
-	function auto_typography($str)
+	function auto_typography($str, $strip_js_event_handlers = TRUE, $reduce_linebreaks = FALSE)
 	{
 		if ($str == '')
 		{
 			return '';
 		}
-		
+
 		// Standardize Newlines to make matching easier
 		if (strpos($str, "\r") !== FALSE)
 		{
@@ -75,13 +75,13 @@
 			
 		// Reduce line breaks.  If there are more than two consecutive linebreaks
 		// we'll compress them down to a maximum of two since there's no benefit to more.
-		if ($this->reduce_empty_lines == TRUE)
+		if ($reduce_linebreaks === TRUE)
 		{
 			$str = preg_replace("/\n\n+/", "\n\n", $str);
 		}
 		
 		 // Do we allow JavaScript event handlers? If not, we strip them from within all tags
-		if ($this->allow_js_event_handlers == FALSE)
+		if ($strip_js_event_handlers === TRUE)
 		{
 			$str = preg_replace("#<([^><]+?)([^a-z_\-]on\w*|xmlns)(\s*=\s*[^><]*)([><]*)#i", "<\\1\\4", $str);
  		}       
@@ -140,7 +140,7 @@
 			}
 			
 			//  Convert Newlines into <p> and <br /> tags
-			$str .= $this->format_newlines($chunk);
+			$str .= $this->_format_newlines($chunk);
 		}
 
 		// Convert quotes, elipsis, and em-dashes
@@ -168,7 +168,7 @@
 						);
 	
 		// Do we need to reduce empty lines?
-		if ($this->reduce_empty_lines == TRUE)
+		if ($reduce_linebreaks === TRUE)
 		{
 			$table['#<p>\n*</p>#'] = '';
 		}
@@ -191,6 +191,10 @@
 	 * This function mainly converts double and single quotes
 	 * to curly entities, but it also converts em-dashes,
 	 * double spaces, and ampersands
+	 *
+	 * @access	public
+	 * @param	string
+	 * @return	string
 	 */
 	function format_characters($str)
 	{
@@ -242,7 +246,7 @@
 	 * Converts newline characters into either <p> tags or <br />
 	 *
 	 */	
-	function format_newlines($str)
+	function _format_newlines($str)
 	{
 		if ($str == '')
 		{
@@ -260,33 +264,6 @@
 		return '<p>'.$str.'</p>';
 	}
 	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Allow JavaScript Event Handlers?
-	 *
-	 * For security reasons, by default we disallow JS event handlers
-	 *
-	 */	
-	function allow_js_event_handlers($val = FALSE)
-	{
-		$this->allow_js_event_handlers = ($val === FALSE) ? FALSE : TRUE;
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Reduce empty lines
-	 *
-	 * Sets a flag that tells the parser to reduce any instances of more than
-	 * two consecutive linebreaks down to two
-	 *
-	 */	
-	function reduce_empty_lines($val = FALSE)
-	{
-		$this->reduce_empty_lines = ($val === FALSE) ? FALSE : TRUE;
-	}
-
 	// ------------------------------------------------------------------------
 	
 	/**
diff --git a/user_guide/libraries/typography.html b/user_guide/libraries/typography.html
index 91b205b..359c590 100644
--- a/user_guide/libraries/typography.html
+++ b/user_guide/libraries/typography.html
@@ -89,7 +89,21 @@
 
 <code>$string = $this->typography->auto_typography($string);</code>
 
-<p><strong>Note:</strong> Typographic formatting can be processor intensive, particularly if you have a lot of content being formatted.
+<h3>Parameters</h3>
+
+<p>There are two optional parameters:</p>
+
+<ol>
+	<li><strong>Strip JavaScript Event Handlers</strong>. Determines whether the parser should strip all JavaScript event handlers for security.  Use bolean <kbd>TRUE</kbd> or <kbd>FALSE</kbd>.</li>
+	<li><strong>Reduce Linebreaks</strong>.  Determines whether the parser should reduce more then two consecutive linebreaks down to two. Use bolean <kbd>TRUE</kbd> or <kbd>FALSE</kbd>.</li>
+</ol>
+
+<p>By default the parser strips JS Event handlers and does not reduce line breaks. In other words, if no parameters are submitted, it is the same as doing this:</p>
+
+<code>$string = $this->typography->auto_typography($string, <kbd>TRUE</kbd>, <kbd>FALSE</kbd>);</code>
+
+
+<p class="important"><strong>Note:</strong> Typographic formatting can be processor intensive, particularly if you have a lot of content being formatted.
 If you choose to use this function you may want to consider
 <a href="../general/caching.html">caching</a> your pages.</p>
 
@@ -97,9 +111,19 @@
 
 <h2>convert_characters()</h2>
 
+<p>This function is similiar to the <dfn>auto_typography</dfn> function above, except that it only does character conversion:</p>
 
+<ul>
+<li>Quotes are converted to correctly facing curly quote entities, except those that appear within tags.</li>
+<li>Apostrophes are converted to curly apostrophy entities.</li>
+<li>Double dashes (either like -- this or like--this) are converted to em&#8212;dashes.</li>
+<li>Three consecutive periods either preceding or following a word are converted to ellipsis&#8230;</li>
+<li>Double spaces following sentences are converted to non-breaking spaces to mimic double spacing.</li>
+</ul>
 
+<p>Usage example:</p>
 
+<code>$string = $this->typography->convert_characters($string);</code>
 
 
 <h2>nl2br_except_pre()</h2>
